/**
 * 通用字段
 */
export interface IEntity {
  id: string
  createBy: string
  createTime: Date
  updateBy: string
  updateTime: Date
}

/**
 * 系统用户
 */
export interface IUserEntity extends IEntity {
  username: string
  lockFlag: '0' | '1'
  phone: string
  name: string
  roleList: IRoleEntity[]
  menuList: IMenuEntity[]
}

/**
 * 系统角色
 */
export interface IRoleEntity extends IEntity {
  roleName: string
  roleCode: string
  lockFlag: '0' | '1'
  userList: IUserEntity[]
  userIds: string[]
}

/**
 * 菜单
 */
export interface IMenuEntity extends IEntity {
  id: string
  parentId: string
  name: string
  path: string
  meta?: IMenuMeta
  sortOrder: number
  menuType: '0' | '1'
  permission: any

  children?: IMenuEntity[]
}

/**
 * 菜单元数据
 */
export interface IMenuMeta {
  isLink: string
  isKeepAlive: boolean
  icon: string
  enName?: string
  title: string
  isHide: boolean
}

/**
 * 系统客户（客户）
 */

export interface ICustomerEntity extends IEntity {
  customerNamePy: string
  customerName: string
  customerNo: string
  userList: IUserEntity[] // 维护人员
  customerStatus: '0' | '1'
}

/**
 * 系统代理
 */

export interface IAgentEntity extends IEntity {
  customerName: string
  customerClientId: string
  productionLineId: string
  workshopId: string
  cloudIp: string
  agentStatus: '0' | '1'
  agentReportTime: Date
  agentVersion: string
  macAddress: string
}

/**
 * 代理版本管理
 */
export interface IAgentVersionEntity extends IEntity {
  agentVersion: string
  description: string
  allowedVersion?: string
  sysFileId: string
  fileUrl: string
  sysFileOriginal: string
}

/**
 * 故障
 */
export interface IFaultEntity extends IEntity {
  // 外键：代理端id
  eqpAgentId: number
  // 冗余：客户名称
  customerName: string
  // 冗余：客户机号
  customerClientId: string
  // 冗余：产线号
  productionLineId: string
  // 故障编号
  faultNo: string
  // 故障描述
  faultDesc: string
  // 故障名称
  faultName: string
  // 故障代码
  faultCode: string
  // 故障类型：0机，1电，2软
  faultType: '0' | '1' | '2'
  // 故障设备代码
  faultDeviceCode: string
  /** 设备位置 */
  faultDeviceLocation: string
  // 故障位置：线号
  faultLineCode: string
  // 故障位置：站号
  faultStationCode: string
  // 故障发生时间
  faultDiscoveryTime: Date
  // 故障修复时间
  faultRepairedTime: Date
  // 故障最新上报时间
  faultLastReportTime: Date
  // 故障修复人
  faultRepairedBy: string
  // 修复类型 0 人工 1 超时自动
  faultRepairedType: '0' | '1'
  // 故障状态：0待通知，1待修复 2 已修复
  faultStatus: '0' | '1' | '2'
  // 吊挂型号
  productionNumber: string
  // 电控版本
  electricVersion: string
  // 控制版本
  controlVersion: string
  // 业务系统版本
  bizSysVersion: string
  // 业务信息：排产单号
  bizScheduleNumber: string
  // 业务信息：款名
  bizStyleName: string
  // 业务信息：尺码
  bizClozSize: string
  // 业务信息：工序
  bizProcess: string
  // 业务信息：颜色
  bizClozColor: string
  // 业务信息：品类
  bizProductType: string
  // 业务信息：人员
  bizPerson: string
  // 业务信息：站角色
  bizStationRole: string
  // 告警信息
  noticeInfo: string[]
}

export interface INoticeEntity extends IEntity {
  /** 标题 */
  title?: string

  /** 内容 */
  content?: string

  /** 类型标识：0服务维护，1故障告警 */
  type: '0' | '1'

  /** 状态：0未读，1已读 */
  status: '0' | '1'

  /** 渠道：0站内，1钉钉 */
  channel: '0' | '1'

  /** 发送时间 */
  sendTime?: Date

  /** 发送状态：0未发，1已发 */
  sendStatus: '0' | '1'

  /** 通知人id */
  sendUserId?: string
}

/**
 * 故障设备代码
 */
export interface IFaultCodeEntity extends IEntity {
  /** 故障代码 */
  faultCode: string
  /** 故障设备 */
  faultDeviceCode: string
  /** 设备位置 */
  faultDeviceLocation: string
  /** 故障名称 */
  faultName: string
  /** 故障描述 */
  faultDesc: string
}
